package com.rin.design_pattern.abstract_factory;

import com.rin.design_pattern.common.color.Color;
import com.rin.design_pattern.common.shape.Shape;

/**
 * @author RinMi
 * @since 2023/5/26
 *
 * 抽象工厂模式属于创造型模式
 *
 * 提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类
 * 系统的产品有多于一个的产品族，而系统只消费其中某一族的产品。在一个产品族中，定义多个产品
 */
public abstract class AbstractFactory {

    /**
     * 获取Shape
     *
     * @param shapeType 形状类型
     * @return ShapeFactory
     */
    public abstract Shape getShape(String shapeType);

    /**
     * 获取Color
     *
     * @param colorType 形状类型
     * @return ColorFactory
     */
    public abstract Color getColor(String colorType);
}
